package com.jerei.store.mapper;

import com.jerei.store.entity.Address;
import com.jerei.store.entity.District;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * 处理收货地址数据的持久层接口
 */
@Repository
public interface AddressMapper {

    /**
     * 插入收货地址数据
     * @param address  收货地址数据
     * @return 受影响的行数
     */
    Integer insertAddress(Address address);

    /**
     * 统计某用户收货地址数量
     * @param uid
     * @return
     */
    Integer countByUid(Integer uid);

    /**
     * 查询所有的省份
     * @param parent
     * @return 省份的集合
     */
    List<District> findAllProvince(Integer parent);

    /**
     * 查询所有的城市
     * @param code 省份的第三条数据
     * @return 省份集合
     */
    List<District> findAllCity(Integer code);

    /**
     * 查询所有的地区
     * @param code 城市的第三条数据
     * @return 地区集合
     */
    List<District> findAllArea(Integer code);

    /**
     * 通过code查询名字
     * @param code
     * @return
     */
    String findBycode(Integer code);


    /**
     * 通过uid查找到所有的该用户地址
     * @param uid 用户id
     * @return
     */
    List<Address> findAllByUid(Integer uid);


    /**
     * 通过aid删除地址
     * @param aid 唯一id
     * @return
     */
    Integer deleteByAid(Integer aid);


    /**
     * 设置为默认
     * @param aid
     * @return
     */
    Integer setDefault(@Param("aid") Integer aid,
                       @Param("def") Integer def,
                       @Param("date") Date date,
                       @Param("username")String username );


    /**
     * 通过aid来获取唯一的地址信息
     * @param aid
     * @return
     */
    Address selectByAid(Integer aid);



}
